package com.itany.corejava.code08_常用类.string;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月13日 9:43
 */
public class Test10_正则表达式 {
    public static void main(String[] args) {


        // RegExp:Regular Expression正则表达式

        //匹配字符串是否只有一个a

        // 字符串.matches(正则表达式的字符串)：判断指定字符串是否符合指定正则表达式regExp的规则,返回boolean类型
        System.out.println("a".matches("a"));

        //匹配字符串是否是ccc
        // {3}表示匹配出现3次
        System.out.println("cccbbb".matches("c{3}"));

        // 匹配字符串是是否是3-7个a
        // {3,7}出现3-7次
        System.out.println("aa".matches("a{3,7}"));

        //匹配字符串的全是d，至少3个d
        // {3,}至少出现3次
        System.out.println("ddddd".matches("d{3,}"));

        //匹配字符串全是c，至少1次
        // {1,}表示至少1次
        System.out.println("ccc".matches("c{1,}"));

        //+号表示至少出现1次
        System.out.println("aaa".matches("c+"));

        // {0,1}表示匹配前一项出现0次或者1次
        System.out.println("a".matches("a{0,1}"));
        // ?表示匹配前一项出现0次或者1次
        System.out.println("aa".matches("a?"));

        // {0,}表示匹配前一项出现0次或者多次
        System.out.println("aaaa".matches("a{0,}"));

        // *表示匹配前一项出现0次或者多次
        System.out.println("aaaa".matches("a*"));


        //[abc]中的字符串只能是一个，且[]中的内容是或者的关系
        System.out.println("c".matches("[abc]"));
        System.out.println("|".matches("[A|B]"));//要么是A，要么是B，要么是|

        // [abc]{3,5}匹配前一项出现3-5次，只能是a、b、c中的任意一个
        System.out.println("acccc".matches("[abc]{3,5}"));

        // 匹配所有数字
        System.out.println("4".matches("[0-9]"));

        //匹配英文字母
        System.out.println("a".matches("[a-z]"));
        System.out.println("V".matches("[A-Z]"));

        //匹配所有英文字母和数字
        System.out.println("a".matches("[0-9a-zA-Z]"));

        // .匹配除了换行符以外的任意字符
        System.out.println("8".matches("."));
        System.out.println("\t".matches("."));
        System.out.println("\n".matches("."));

        // 对点号进行转义，此时的点号就表示点号的意思
        System.out.println(".".matches("\\."));
        //将点号放置在[]中，就表示点号
        System.out.println("\n".matches("[.]"));

        // 匹配任意一个数字
        System.out.println("1".matches("\\d"));
        System.out.println("4".matches("[0-9]"));

        // 匹配除了数字以外的所有字符, 非数字
        System.out.println("#".matches("\\D"));

        //匹配数字、字母、下划线
        System.out.println("B".matches("\\w"));

        //除了数字、字母、下划线
        System.out.println("a".matches("\\W"));

        //匹配空格
        System.out.println(" ".matches("\\s"));

        // 匹配除了空格以外的字符
        System.out.println("a".matches("\\S"));

        //匹配3位数或者5位数
        System.out.println("78643".matches("\\d{3}|\\d{5}"));
        System.out.println("257".matches("[0-9]{3}([0-9]{2})?"));


    }
}
